
import logging
import re
from datetime import datetime
from config import Config
from rich.logging import RichHandler

"""logging初始化"""
def init_logging():

    Config.LOG_DIR.mkdir(parents=True, exist_ok=True)

    # 获取当前运行时间，格式化为“年月日_时分秒”（避免特殊字符，兼容所有系统）
    current_time = datetime.now().strftime("%Y%m%d_%H%M%S")
    # 生成日志文件名（例如：20251028_143025.log 或带前缀的 pdf_convert_20251028_143025.log）
    log_filename = Config.LOG_DIR / f"{current_time}.log"


    # 创建文件处理器，以覆盖模式写入新日志文件
    file_handler = logging.FileHandler(
        filename=log_filename,
        encoding="utf-8",
        mode='w'
    )

    # 配置 rich 控制台 handler（美化控制台输出）
    console_handler = RichHandler(
        level=logging.INFO,  # 控制台只输出INFO及以上级别（避免DEBUG刷屏）
        show_time=True,      # 显示时间
        show_level=True,     # 显示日志级别（INFO/WARNING等）
        show_path=True,      # 显示日志所在文件和行号
        markup=True,         # 支持日志消息中的Markdown样式（如`[red]错误[/red]`）
        rich_tracebacks=True  # 异常堆栈用rich美化显示
    )
    # 分别设置处理器的日志级别（可选，若不设置则继承全局level）
    file_handler.setLevel(logging.DEBUG)  # 日志文件记录 DEBUG 及以上

    logging.basicConfig(
        format="%(asctime)s - %(threadName)s - %(levelname)s - %(message)s",
        level=logging.DEBUG,
        handlers=[file_handler, console_handler]
    )


def get_file_suffix_from_url(url: str) -> str:
    """从URL中提取文件后缀（如从'http://xxx/file.doc'提取'.doc'）"""
    # 正则匹配URL末尾的"后缀"（如 .doc、.pdf?param=1 中的 .pdf）
    match = re.search(r'\.([a-zA-Z0-9]+)(\?|#|$)', url, re.I)
    if match:
        suffix = f".{match.group(1).lower()}"  # 转为小写（如.DOC → .doc）
        return suffix
    return ""  # 无后缀或无法识别


